package service.permission;

import java.util.List;

import common.entities.Page;
import entities.permission.Permission;
import entities.permission.Role;
import entities.permission.RoleAndMenu;
import entities.permission.RoleAndPermission;

/**
 * 
 * Permission 接口
 * @author hxl
 * 2018年11月26日
 */
public interface PermissionService {
	/**
	 * 新增权限
	 * @param permisssion
	 * @return
	 */
    public void addPermission(Permission permisssion);
    /**
     * 获得所有角色
     * @return
     */
	public List<Role> getRoles();
	/**
	 * 获得所有角色分页列表
	 * @param name
	 * @param page
	 * @param rows
	 * @return
	 */
	public Page<Role> getRolePage(String name, int page, int rows);
	/**
	 * 获得权限分页列表
	 * @param name
	 * @param page
	 * @param rows
	 * @return
	 */
	public Page<Permission> getPermissionPage(String name, int page, int rows);
	/**
	 * 判断是否存在重名角色
	 * @param id
	 * @param name
	 * @return
	 */
	public boolean isExistRole(String id, String name);
	/**
	 * 新增一个角色
	 * @param role
	 */
	public void addRole(Role role);
	/**
	 * 更新角色
	 * @param role
	 */
	public void updateRole(Role role);
	/**
	 * 批量删除角色
	 * @param ids
	 */
	public void deleteRoles(String ids);
	/**
	 * 获得菜单权限
	 * @param roleId
	 * @return
	 */
	public List<RoleAndMenu> getRoleAndMenu(String roleId);
	/**
	 * 设置菜单权限
	 * @param roleId
	 * @param checkedMenuId
	 */
	public void setMenuPermission(String roleId, List<String> checkedMenuId);
	/**
	 * 判断是否有重名权限
	 * @param id
	 * @param name
	 * @return
	 */
	public boolean isExistPermission(String id, String name);
	/**
	 * 修改权限
	 * @param permission
	 */
	public void updatePermission(Permission permission);
	/**
	 * 批量删除权限
	 * @param ids
	 */
	public void deletePermissions(String ids);
	/**
	 * 获得角色和权限关系
	 * @param roleId
	 * @return
	 */
	public List<RoleAndPermission> getRoleAndPermissions(String roleId);
	/**
	 * 设置权限
	 * @param roleId
	 * @param asList
	 */
	public void setPermission(String roleId, List<String> checkedPermissionId);
}
